package com.swpu.weiyu;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Wales Yu
 * <p>
 * 这个类 主要充当 数据提供者
 * 提供数据的类  不需要主函数的介入
 * <p>
 * 提供不同返回值类型的方法
 * <ul>
 *     <li> 1. int </li>
 *     <li> 2. String </li>
 *     <li> 3. List </li>
 *     <li> 4. Map </li>
 *     <li> 5. Object </li>
 * </ul>
 */
public class Task2 {

    /**
     * 1. 无返回值的方法
     */
    public void test1() {
        System.out.println("Hello World !");
    }

    /**
     * 2.整型 - 有返回值，并且是没有参数的方法
     *
     * @return int
     */
    public int addMethod() {
        var y = 1 + 1;
        return y;
    }

    /**
     * 2.1. 整型 - 有返回值，有参数的方法
     *
     * @return int
     */
    public int multiMethod(int x) {
        var y = x * 2;
        return y;
    }

    /**
     * 3. 字符 - 有返回值，没有参数 的方法
     *
     * @return string 字符串
     */
    public String stringMethod() {
        var str = "String 有返回值，没有参数 的方法";
        return str;
    }

    /**
     * 3.1. 字符 - 有返回值，有参数 的方法
     *
     * @return string 字符串
     */
    public String stringMethod2(String string) {
        var str = "String 有返回值，有参数 的方法" + string;
        return str;
    }

    /**
     * 4. List - 有返回值，没有参数 的方法
     *
     * @return List 强化版的数组
     */
    public List<String> listMethod() {
        var list = new ArrayList<String>();
        list.add("List - 有返回值，没有参数 的方法");
        return list;
    }

    /**
     * 4.1. List - 有返回值，有参数 的方法
     *
     * @return List 强化版的数组
     */
    public List<String> listMethod2(String name) {
        var list = new ArrayList<String>();
        list.add(name);
        return list;
    }

    /**
     * 5. Map - 有返回值，没有参数 的方法
     * <p>
     * 键值对 - Key - Value
     * 身份证 - 对应的人
     * 一般都是字符 - 有可能是字符、有可能是数字、有可能是其他类型
     *
     * @return Map 强化版的 List
     */
    public Map<String, Object> mapMethod() {
        var map = new HashMap<String, Object>();
        map.put("身份证", "131231231231231321");
        return map;
    }

    /**
     * 5.1. Map - 有返回值，有参数 的方法
     *
     * @return Map 强化版的 List
     */
    public Map<String, Object> mapMethod2(String name) {
        var map = new HashMap<String, Object>();
        map.put("名称", name);
        return map;
    }

    /**
     * 6. Object - 有返回值，没有参数 的方法
     *
     * @return Object, Java 一切皆对象
     */
    public Object objectMethod() {
        var name = "WEI_YU";
        return name;
    }

    /**
     * 6.1. Object - 有返回值，有参数 的方法
     * @param name name
     * @return Obejct - Java 一切皆对象
     */
    public Object objectMethod2(String name) {
        var age = 24;
        return "名称: " + name + " & age: " + age;
    }
}
